package structybxb

import (
	"encoding/json"
	"fmt"
)

type stu struct {
	// 通过指定json的标签，实现json发序列化和反序列化时的key。
	Id   int32  `json:"id"`   // 主键ID。
	Sno  string `json:"sno"`  // 学号
	Name string `json:"name"` // 姓名
	// 私有属性不能被json包访问
	age int    // 年龄
	Sex string // 性别
}

func TestStructTagToJson() {
	var s = &stu{Id: 1111, Sno: "20230001", Name: "李四", Sex: "男", age: 18}
	var result, err = json.Marshal(s)
	if err != nil {
		fmt.Println("JSON转换成失败！！！")
	} else {
		fmt.Println(string(result))
		// 打印:{"id":1111,"sno":"20230001","name":"李四","Sex":"男"}
	}
}

func TestStructTagToStruct() {
	var str = `{"ID":12,"sno":"20230001","name":"李四","Sex":"男"}`
	var result = &stu{}
	var err = json.Unmarshal([]byte(str), result)
	if err != nil {
		fmt.Println("JSON转换成失败！！！")
	}
	fmt.Println(result) // 打印结果：&{12 20230001 李四 0 男}
}
